home *** CD-ROM | disk | FTP | other *** search
/ Logiciels PC 7 / logiciel pc 7.iso / Divers / Prog / Delphi / ZipManager / DISK1 / _SETUP.1 / MainForm.pas < prev    next >
Pascal/Delphi Source File  |  1998-12-12  |  13KB  |  395 lines

  1. (*
  2.   UnitΘ principale
  3.   (c) Logiciel PC 1998 & Gilles ROMANI
  4.  
  5.   Cette fiche requiert l'utilisation des composants freeware suivants :
  6.         * Zip Master
  7.         * TFileDrag Component (c) Erik C. Nielsen
  8. *)
  9. unit MainForm;
  10.  
  11. interface
  12.  
  13. uses
  14.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  15.   ExtCtrls, Grids, ToolWin, ComCtrls, Buttons, filedrag, StdCtrls,
  16.   ZipMstr, Menus, APropos;
  17.  
  18. type
  19.   TForm1 = class(TForm)
  20.     FileDrag1: TFileDrag;
  21.     ZipMaster1: TZipMaster;
  22.     SaveDialog1: TSaveDialog;
  23.     PopupMenu1: TPopupMenu;
  24.     Extrairevers1: TMenuItem;
  25.     Supprimer1: TMenuItem;
  26.     MainMenu1: TMainMenu;
  27.     Fichier1: TMenuItem;
  28.     Nouvellearchive1: TMenuItem;
  29.     FermerArchive1: TMenuItem;
  30.     N1: TMenuItem;
  31.     Quitter1: TMenuItem;
  32.     Options1: TMenuItem;
  33.     N2: TMenuItem;
  34.     Aide1: TMenuItem;
  35.     AproposdeZipManager1: TMenuItem;
  36.     Panel4: TPanel;
  37.     StatusBar1: TStatusBar;
  38.     OpenDialog1: TOpenDialog;
  39.     ListView1: TListView;
  40.     N3: TMenuItem;
  41.     N4: TMenuItem;
  42.     Voir1: TMenuItem;
  43.     procedure FormCreate(Sender: TObject);
  44.     procedure FileDrag1Drop(Sender: TObject);
  45.     procedure FillGrid;
  46.     procedure Nouvellearchive1Click(Sender: TObject);
  47.     procedure Supprimer1Click(Sender: TObject);
  48.     procedure Quitter1Click(Sender: TObject);
  49.     procedure FermerArchive1Click(Sender: TObject);
  50.     procedure AproposdeZipManager1Click(Sender: TObject);
  51.     procedure Options1Click(Sender: TObject);
  52.     procedure Extrairevers1Click(Sender: TObject);
  53.     procedure Voir1Click(Sender: TObject);
  54.     procedure ListView1DblClick(Sender: TObject);
  55.   private
  56.     { DΘclarations privΘes}
  57.   public
  58.     { DΘclarations publiques}
  59.   end;
  60.  
  61. var
  62.   Form1: TForm1;
  63.  
  64. implementation
  65.  
  66. uses options, Extract, view;
  67.  
  68. {$R *.DFM}
  69. (*
  70.   *********************************************
  71.     La procΘdure de remplissage de la grille
  72.   *********************************************
  73. *)
  74. procedure TForm1.FillGrid;
  75. var
  76.   i: Integer;
  77.   NewItem : TListItem;
  78.   NewColumn : TListColumn;
  79. begin
  80.   with ListView1 do
  81.   begin
  82.        Columns.Clear;
  83.        Items.Clear;
  84.        NewColumn := Columns.Add;
  85.        NewColumn.Caption := 'Nom';
  86.        NewColumn := Columns.Add;
  87.        NewColumn.Caption := 'Taille (compressΘe)';
  88.        NewColumn := Columns.Add;
  89.        NewColumn.Caption := 'Taille (dΘcompressΘe)';
  90.        NewColumn := Columns.Add;
  91.        NewColumn.Caption := 'Date';
  92.        for i:=0 to ZipMaster1.Count-1 do
  93.        begin
  94.             with ZipDirEntry( ZipMaster1.ZipContents[i]^) do
  95.             begin
  96.                  NewItem := ListView1.Items.Add;
  97.                  NewItem.Caption := FileName;
  98.                  NewItem.SubItems.Add( IntToStr(CompressedSize));
  99.                  NewItem.SubItems.Add( IntToStr(UncompressedSize));
  100.                  NewItem.SubItems.Add( FormatDateTime('ddddd  t',FileDateToDateTime(DateTime)));
  101.             end;
  102.        end;
  103.        Columns[0].Width := 250;
  104.        Columns[1].Width := 120;
  105.        Columns[2].Width := 120;
  106.        Columns[3].Width := 70;
  107.   end;
  108. end;
  109.  
  110. (*
  111.   ***********************************
  112.     Creation de la fiche principale
  113.   ***********************************
  114. *)
  115. procedure TForm1.FormCreate(Sender: TObject);
  116. begin
  117.      // Les options par dΘfaut de Zip Master
  118.      ZipMaster1.AddOptions := [ AddDirNames, AddRecurseDirs, AddHiddenFiles];
  119.      // Mise α jour de la StatusBar
  120.      StatusBar1.Panels[0].Text := 'Aucune archive ouverte';
  121.      StatusBar1.Panels[1].Text := 'RΘpertoires - RΘcursif - Fichiers cachΘs';
  122. end;
  123.  
  124. (*
  125.   ************************
  126.     Le lachΘ de fichiers
  127.   ************************
  128. *)
  129. procedure TForm1.FileDrag1Drop(Sender: TObject);
  130. begin
  131.      (* L'archive est vide *)
  132.      if ( ZipMaster1.ZipFileName = '') then
  133.      begin
  134.           (* On demande un nom pour l'archive *)
  135.           SaveDialog1.FileName := '*.zip';
  136.           if ( SaveDialog1.Execute ) then
  137.           begin
  138.                // MΘmorisation du nom de l'archive
  139.                ZipMaster1.ZipFileName := SaveDialog1.FileName;
  140.                // Ajout des fichiers α l'archive
  141.                ZipMaster1.FSpecArgs := FileDrag1.Files;
  142.                (* Au cas o∙ se serait long, on modifie le curseur *)
  143.                Screen.Cursor := crHourGlass;
  144.                ZipMaster1.Add;
  145.                // Mise α jour de la grille
  146.                FillGrid;
  147.                Screen.Cursor := crDefault;
  148.                // Modification du bandeau de l'application
  149.                Form1.Caption := 'Zip Manager - ' + ZipMaster1.ZipFileName;
  150.           end
  151.      end
  152.      else
  153.      begin
  154.           (* L'archive est dΘjα ouverte *)
  155.           // Ajout des fichiers α l'archive
  156.           ZipMaster1.FSpecArgs := FileDrag1.Files;
  157.           Screen.Cursor := crHourGlass;
  158.           ZipMaster1.Add;
  159.           // Mise α jour de la grille
  160.           FillGrid;
  161.           Screen.Cursor := crDefault;
  162.      end;
  163. end;
  164.  
  165. (*
  166.   *******************************
  167.     Le menu ouverture d'archive
  168.   *******************************
  169. *)
  170. procedure TForm1.Nouvellearchive1Click(Sender: TObject);
  171. begin
  172.      //  on demande le nom de l'archive
  173.      OpenDialog1.FileName := '*.zip';
  174.      if ( OpenDialog1.Execute ) then
  175.      begin
  176.           ZipMaster1.ZipFileName := OpenDialog1.FileName;
  177.           // Modification du bandeau de l'application
  178.           Form1.Caption := 'Zip Manager - ' + ZipMaster1.ZipFileName;
  179.           // Mise α jour de la grille
  180.           Screen.Cursor := crHourGlass;
  181.           FillGrid;
  182.           Screen.Cursor := crDefault;
  183.           // Mise α jour de la status Bar
  184.           StatusBar1.Panels[0].Text := ZipMaster1.ZipFileName;
  185.      end;
  186. end;
  187.  
  188. (*
  189.   ***************************
  190.     Suppression de fichiers
  191.   ***************************
  192. *)
  193. procedure TForm1.Supprimer1Click(Sender: TObject);
  194. var
  195.    i : Integer;
  196.    nCpt : Integer;
  197.    szMsg : String;
  198. begin
  199.      if ListView1.Selected <> Nil then
  200.      begin
  201.          // Initialise le nombre de fichiers α supprimer
  202.          nCpt := 0;
  203.          // Vide la liste des fichiers
  204.          ZipMaster1.FSpecArgs.Clear;
  205.          Screen.Cursor := crHourGlass;
  206.          // RecupΦre les objets sΘlectionnΘs
  207.          for i := 0 to ListView1.Items.Count-1 do
  208.          begin
  209.               // Ajoute les fichiers α supprimer de l'archive
  210.               if ( ListView1.Items[i].Selected = TRUE) then
  211.               begin
  212.                  ZipMaster1.FSpecArgs.Add( ListView1.Items[i].Caption);
  213.                  nCpt := nCpt + 1;
  214.               end;
  215.          end;
  216.          szMsg := 'Etes-vous s√r de vouloir supprimer ce';
  217.          if ( nCpt >1) then szMsg := szMsg + 's '+IntToStr(nCpt) + ' fichiers ?'
  218.                        else  szMsg := szMsg + ' fichier ?';
  219.          if MessageDlg(szMsg, mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  220.               // Suppression du fichier dans l'archive
  221.               ZipMaster1.Delete
  222.          else
  223.               // Vide la liste des fichiers
  224.               ZipMaster1.FSpecArgs.Clear;
  225.          // Mise α jour de la grille
  226.          FillGrid;
  227.          Screen.Cursor := crDefault;
  228.      end;
  229. end;
  230.  
  231. (*
  232.    ***********************
  233.      La fin du programme
  234.    ***********************
  235. *)
  236. procedure TForm1.Quitter1Click(Sender: TObject);
  237. begin
  238.      Close;
  239. end;
  240.  
  241. (*
  242.   ***************************
  243.     Fermeture d'une archive
  244.   ***************************
  245. *)
  246. procedure TForm1.FermerArchive1Click(Sender: TObject);
  247. begin
  248.      // Vide le nom de l'archive
  249.      ZipMaster1.ZipFilename := '';
  250.      // Modifie le bandeau de la fenΩtre
  251.      Form1.Caption := 'Zip Manager';
  252.      // Modifie les panels
  253.      StatusBar1.Panels[0].Text := 'Aucune archive ouverte';
  254.      // Mise α jour de la grille
  255.      FillGrid;
  256. end;
  257.  
  258. (*
  259.   ***********************
  260.     La boite d'A propos
  261.   ***********************
  262. *)
  263. procedure TForm1.AproposdeZipManager1Click(Sender: TObject);
  264. begin
  265.      // Affiche la boite de dialogue
  266.      AboutBox.ShowModal;
  267. end;
  268.  
  269. (*
  270. ***********************************
  271.   Lancement de la boite d'options
  272. ***********************************
  273. *)
  274. procedure TForm1.Options1Click(Sender: TObject);
  275. begin
  276.      (* On a cliquΘ sur OK ?*)
  277.      if ( OKRightDlg1.ShowModal = mrOk) then
  278.      begin
  279.           (* Rajout ou suppression des options et mise α jour de la status Bar *)
  280.           // Teste si option garder les noms des rΘpertoires
  281.           if ( OKRightDlg1.CheckBox1.State = cbChecked) then
  282.           begin
  283.                ZipMaster1.AddOptions := ZipMaster1.AddOptions + [ AddDirNames];
  284.                StatusBar1.Panels[1].Text := 'RΘpertoires ';
  285.           end
  286.           else
  287.           begin
  288.                ZipMaster1.AddOptions := ZipMaster1.AddOptions - [ AddDirNames];
  289.                StatusBar1.Panels[1].Text := '';
  290.           end;
  291.           // Teste si option rΘcursif
  292.           if ( OKRightDlg1.CheckBox2.State = cbChecked) then
  293.           begin
  294.                ZipMaster1.AddOptions := ZipMaster1.AddOptions + [ AddRecurseDirs];
  295.                StatusBar1.Panels[1].Text := StatusBar1.Panels[1].Text + 'RΘcursif ';
  296.           end
  297.           else
  298.           begin
  299.                ZipMaster1.AddOptions := ZipMaster1.AddOptions - [ AddRecurseDirs];
  300.           end;
  301.           // Teste si option Compresser les fichiers cachΘs
  302.           if ( OKRightDlg1.CheckBox3.State = cbChecked) then
  303.           begin
  304.                ZipMaster1.AddOptions := ZipMaster1.AddOptions + [ AddHiddenFiles];
  305.                StatusBar1.Panels[1].Text := StatusBar1.Panels[1].Text + 'Fichiers CachΘs';
  306.           end
  307.           else
  308.           begin
  309.                ZipMaster1.AddOptions := ZipMaster1.AddOptions - [ AddHiddenFiles];
  310.           end;
  311.      end;
  312. end;
  313.  
  314. (*
  315.   ***********************************
  316.     Extraction des fichiers vers...
  317.   ***********************************
  318. *)
  319. procedure TForm1.Extrairevers1Click(Sender: TObject);
  320. var i : Integer;
  321. begin
  322.      if ListView1.Selected <> Nil then
  323.      begin
  324.          (* Affiche la boite de sΘlection de rΘpertoires *)
  325.          (* On a cliquΘ sur OK ?*)
  326.          if (OKRightDlg.ShowModal = mrOk) then
  327.          begin
  328.               (* On garde l'arborescence *)
  329.               ZipMaster1.ExtrOptions := [ ExtrDirNames];
  330.               (* Le chemin de base pour l'extraction *)
  331.               ZipMaster1.ExtrBaseDir := OKRightDlg.DirectoryListBox1.Directory;
  332.               // Parcoure la ListView pour sΘlectionner les fichiers
  333.               for i := 0 to ListView1.Items.Count-1 do
  334.               begin
  335.                    if ( ListView1.Items[i].Selected = TRUE) then
  336.                       ZipMaster1.FSpecArgs.Add( ListView1.Items[i].Caption);
  337.               end;
  338.               // Extraction
  339.               Screen.Cursor := crHourGlass;
  340.               ZipMaster1.Extract;
  341.               Screen.Cursor := crDefault;
  342.          end;
  343.      end;
  344. end;
  345. (*
  346.   ******************************
  347.     Visualisation d'un fichier
  348.   ******************************
  349. *)
  350. procedure VisualisationFichier;
  351. var szFich : String;
  352.     i : Integer;
  353. begin
  354.      with Form1 do
  355.      begin
  356.           if ( ListView1.Selected <> Nil) then
  357.           begin
  358.                // DΘcompression du fichier dans un rΘpertoire temporaire
  359.                szFich := ListView1.Selected.Caption;
  360.                ZipMaster1.FSpecArgs.Add( szFich);
  361.                ZipMaster1.ExtrOptions := [];
  362.                 (* Le chemin de base pour l'extraction *)
  363.                 ZipMaster1.ExtrBaseDir := 'c:\temp';
  364.                 ZipMaster1.Extract;
  365.                 // Modification du nom de l'archive pour remplacer les / par \
  366.                 for i:=1 to Length( szFich) do
  367.                 begin
  368.                      if IsDelimiter( '/', szFich, i) then
  369.                         szFich[i] := '\';
  370.                 end;
  371.                 // Extraction du nom du fichier
  372.                 szFich := ExtractFileName( szFich);
  373.                 // Chargement du fichier dans le mΘmo
  374.                 Form3.Memo1.Lines.LoadFromFile( 'c:\temp\'+ szFich);
  375.                 // Affichage du viewer
  376.                 Form3.ShowModal;
  377.                 // Vidage du mΘmo
  378.                 Form3.Memo1.Lines.Clear;
  379.                 // Suppression du fichier
  380.                 DeleteFile( 'c:\temp\'+szFich);
  381.            end;
  382.      end;
  383. end;
  384. procedure TForm1.Voir1Click(Sender: TObject);
  385. begin
  386.      VisualisationFichier;
  387. end;
  388.  
  389. procedure TForm1.ListView1DblClick(Sender: TObject);
  390. begin
  391.      VisualisationFichier;
  392. end;
  393.  
  394. end.
  395.